package com.haoze.nurseapp.service;

import com.haoze.common.response.Result;
import com.haoze.nurseapp.dto.SpecimenTransferDTO;
import com.haoze.nurseapp.dto.specimen.SpecimenReadyDto;
import com.haoze.nurseapp.model.DoubleCheckLogEntity;
import com.haoze.nurseapp.model.SysTestTubeColorEntity;
import com.haoze.nurseapp.vo.TaskNodeVO;
import com.haoze.nurseapp.vo.specimen.SpecimenDetailVO;
import com.haoze.nurseapp.vo.specimen.SpecimenLabInfoVO;
import com.haoze.nurseapp.vo.specimen.SpecimenQrCodeStatusDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 标本采集
 * @author wangze
 * @date 2020-05-20 13:18.
 **/
public interface SpecimenService {

	/**
	 * 根据标本条码号，查询标本
	 * @param specimenNum
	 * @param showFlag
	 * @return
	 */
	SpecimenDetailVO querySpecimen(String specimenNum, String showFlag);

	/**
	 * 采集准备
	 * @param readyDto
	 * @return
	 */
	Result specimenReady(List<SpecimenReadyDto> readyDto);

	/**
	 * 采集完成
	 * @param specimenNums
	 * @return
	 */
	Result specimenFinish(List<String> specimenNums);


	/**
	 * 查询标本相关的检验信息
	 * @param specimenNum
	 * @return
	 */
	SpecimenLabInfoVO queryLabList(String specimenNum);


	/**
	 * 转运
	 * @param specimen
	 * @return
	 */
	Result specimenTransfer(String specimen);

	/**
	 * 双码校验
	 * @param firstQrCode
	 * @param secondQrCode
	 * @param nodeType
	 * @return
	 */
	SpecimenQrCodeStatusDto<TaskNodeVO> checkSpecimenQrCode(String firstQrCode, String secondQrCode, String nodeType);


	/**
	 * 标本待转运列表
	 */
	Result queryLabWaitTransfer(int pageNum, int pageSize,String wardId);


	/**
	 * 根据标本条码查询标本转运信息
	 */
	Result scannSpecimen(String specimenNum);

	/**
	 * 根据标本条码查询标本转运信息
	 */
	Result confirmTransfer(SpecimenTransferDTO specimenTransferDTO);


	/**
	 * 根据标本条码查询标本转运信息
	 */
	Result queryLabHistoryTransfer(String startDate,String endDate,String keywords,int pageNum, int pageSize,String wardId);


	/**
	 * 查看报告接口
	 */
	Result viewReport(String specimenNum,String reqNum,String serialNumber);

	/**
	 * 根据任务频次id查询任务详细
	 */
	Result querySpecimenTransferDetail(String taskBatchId,String statusFlag);

	/**
	 * 根据病区获取护工信息
	 * @param pageNum
	 * @param pageSize
	 * @return
	 */
	Result queryNurseWorkerList(int pageNum, int pageSize,String keyWords);

    /**
     * 副护士开始核对
     * @param doubleCheckLogEntity
     * @return
     */
	Result saveDoubleCheckLog(DoubleCheckLogEntity doubleCheckLogEntity);
    /**
     * 医生开始核对
     * @param doubleCheckLogEntity
     * @return
     */
	Result checkDoctorDoubleCheckLog(DoubleCheckLogEntity doubleCheckLogEntity);

    /**
     * 主护士核对完毕
     * @param doubleCheckLogEntity
     * @return
     */
    Result nurseDoubleCheck(DoubleCheckLogEntity doubleCheckLogEntity);

    String selectHspBasicDataValue(String name);

	int insertSysTestTubeColor(SysTestTubeColorEntity sysTestTubeColorEntity);


}
